bitkeeper revision 1.208 (3eb7cc95biENxNPLM1gD4B9rpj7H_w)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 6 May 2003 14:54:13 +0000 (14:54 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 6 May 2003 14:54:13 +0000 (14:54 +0000)
Makefile:
  new file
Many files:
  Allow hypercalls from ring 3 (if permitted by ring 1).
.del-Config.in~31701845a0b06ec3:
  Delete: xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in

14 files changed:
.rootkeys
xen/arch/i386/entry.S
xen/arch/i386/process.c
xen/arch/i386/traps.c
xen/include/asm-i386/processor.h
xen/include/hypervisor-ifs/hypervisor-if.h
xenolinux-2.4.21-pre4-sparse/arch/xeno/config.in
xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c
xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/process.c
xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/setup.c
xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in [deleted file]
xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile [new file with mode: 0644]
xenolinux-2.4.21-pre4-sparse/include/asm-xeno/hypervisor.h
xenolinux-2.4.21-pre4-sparse/include/asm-xeno/processor.h

index ab6d2dfe6eabf924d3cce4e34a057002929ec906..c450c67df239665b357eb7a284f08cca6849e946 100644 (file)
--- a/.rootkeys
+++ b/.rootkeys
 3e5a4e668yELUdtr3HiJZBIqxqUyuA xenolinux-2.4.21-pre4-sparse/drivers/block/Config.in
 3ea53c6em6uzVHSiGqrbbAVofyRY_g xenolinux-2.4.21-pre4-sparse/drivers/block/genhd.c
 3e5a4e66mrtlmV75L1tjKDg8RaM5gA xenolinux-2.4.21-pre4-sparse/drivers/block/ll_rw_blk.c
-3ead095dEkj9JJWYYBnbvW3OYbKFxg xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
+3eb7cc90LCRDzdNiLIt20dkBbAwVKQ xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile
 3ead095dPseRoFELVf_xcnVXjq02hw xenolinux-2.4.21-pre4-sparse/drivers/char/dummy_console.c
 3e5a4e66rw65CxyolW9PKz4GG42RcA xenolinux-2.4.21-pre4-sparse/drivers/char/tty_io.c
 3e5a4e669uzIE54VwucPYtGwXLAbzA xenolinux-2.4.21-pre4-sparse/fs/exec.c
index f14f594ee52ef3e8e4fd3e5cb7b6ab4cf2aab18d..33d533a28357dc2fc77cc565ef51ff65a84b5513 100644 (file)
@@ -210,8 +210,8 @@ ENTRY(ret_from_newdomain)
  */
 do_multicall:
         popl  %eax
-        cmpl  $SYMBOL_NAME(ret_from_hypervisor_call),%eax
-        jne   multicall_exit /* bail if called recursively */
+        cmpl  $SYMBOL_NAME(multicall_return_from_call),%eax
+        je    multicall_return_from_call
         pushl %ebx
         movl  4(%esp),%ebx   /* EBX == call_list */
         movl  8(%esp),%ecx   /* ECX == nr_calls  */
@@ -231,12 +231,12 @@ multicall_fault6:
         movl  (%ebx),%eax
         andl  $255,%eax
         call  *SYMBOL_NAME(hypervisor_call_table)(,%eax,4)
+multicall_return_from_call:
         addl  $20,%esp
         popl  %ecx
         addl  $BYTES_PER_MULTICALL_ENTRY,%ebx
         loop  multicall_loop
         popl  %ebx
-multicall_exit:
         xorl  %eax,%eax
         jmp   ret_from_hypervisor_call
 
@@ -647,7 +647,7 @@ ENTRY(hypervisor_call_table)
         .long SYMBOL_NAME(do_dom_mem_op)
         .long SYMBOL_NAME(do_multicall)
         .long SYMBOL_NAME(do_kbd_op)
-        .long SYMBOL_NAME(do_iopl)
+        .long SYMBOL_NAME(do_set_priv_levels)
         .rept NR_syscalls-((.-hypervisor_call_table)/4)
         .long SYMBOL_NAME(sys_ni_syscall)
        .endr
index 2cac1a9d4e373d1c5a13f98525b4cd69e10aa910..695b58150758ec0c563249d57fc182310b8ac17c 100644 (file)
@@ -348,10 +348,19 @@ void __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
 }
 
 
-long do_iopl(unsigned int new_iopl)
+long do_set_priv_levels(unsigned int new_io_pl, unsigned int new_hypercall_pl)
 {
     struct pt_regs *regs = GET_SYSCALL_REGS(current);
-    if ( !IS_PRIV(current) ) return -EPERM;
-    regs->eflags = (regs->eflags & 0xffffcfff) | ((new_iopl&3) << 12);
+
+    /*
+     * Any domain can reduce privilege required for hypercall access.
+     * Note that access from ring 1 cannot be relinquished.
+     */
+    current->thread.hypercall_pl = new_hypercall_pl & 3;
+
+    /* Only privileged domains can acquire access to I/O ports. */
+    if ( IS_PRIV(current) )
+        regs->eflags = (regs->eflags & 0xffffcfff) | ((new_io_pl&3) << 12);
+
     return 0;
 }
index 8ca6b90ccffc74633c1aa1048033fa92ba7c3924..e4af21065b92e46d19ce571de7329040817bb421 100644 (file)
@@ -401,6 +401,23 @@ asmlinkage void do_general_protection(struct pt_regs *regs, long error_code)
      */
     if ( (error_code & 3) == 2 )
     {
+        /*
+         * Hypercalls from rings 2 or 3 fall through to here. If permitted, we 
+         * will transfer control to the requested hypercall.
+         */
+        if ( ((error_code>>3) == HYPERVISOR_CALL_VECTOR) &&
+             (current->thread.hypercall_pl >= (regs->xcs & 3)) )
+        {
+            __asm__ __volatile__ (
+                "movl %0,%%esp                                         \n"
+                "sti                                                   \n"
+                "andl $255,%%eax                                       \n"
+                "call *hypervisor_call_table(,%%eax,4)                 \n"
+                "movl %%eax,0x18(%%esp)                                \n"
+                "jmp  ret_from_intr                                    \n"
+                : : "r" (regs) );
+        }
+
         /* This fault must be due to <INT n> instruction. */
         ti = current->thread.traps + (error_code>>3);
         if ( ti->dpl >= (regs->xcs & 3) )
index c0de1bd9b9c2a6ebec5e2ff6b05febe875c6d888..7a1afac68a12eae1776eb0ead53a5b4905a5241b 100644 (file)
@@ -356,6 +356,7 @@ struct thread_struct {
     int                 fast_trap_idx;
     struct desc_struct  fast_trap_desc;
     trap_info_t         traps[256];
+    int                 hypercall_pl;
 };
 
 #define IDT_ENTRIES 256
index f72e8783d5413356c1e21e3265797da6d98f22bb..2516f84554ad41ce0006db72003f0d0e51e26454 100644 (file)
@@ -48,7 +48,7 @@
 #define __HYPERVISOR_dom_mem_op                  17
 #define __HYPERVISOR_multicall           18
 #define __HYPERVISOR_kbd_op               19
-#define __HYPERVISOR_iopl                 20
+#define __HYPERVISOR_set_priv_levels      20
 
 /* And the trap vector is... */
 #define TRAP_INSTR "int $0x82"
index 2bf874d69e387d727d96c8f196afa5c19f5e3964..717ae0c605bdb2728cd4a74244b6ef6f63569034 100644 (file)
@@ -107,7 +107,25 @@ source drivers/block/Config.in
 define_bool CONFIG_BLK_DEV_IDE_MODES n
 define_bool CONFIG_BLK_DEV_HD n
 
-source drivers/char/Config.in
+mainmenu_option next_comment
+comment 'Character devices'
+
+bool 'Xen console support' CONFIG_XEN_CONSOLE
+comment 'The options below are alpha-stage and will probably not work'
+bool 'Virtual terminal' CONFIG_VT
+if [ "$CONFIG_VT" = "y" ]; then
+   bool '  Support for console on virtual terminal' CONFIG_VT_CONSOLE
+   bool '  Support for VGA Video' CONFIG_VGA_CONSOLE
+   bool '  Support for Dummy Video (for testing)' CONFIG_DUMMY_CONSOLE
+   bool '  PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
+fi
+
+bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS
+if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
+   int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256
+fi
+
+endmenu
 
 source fs/Config.in
 
index c43daee3fd50d8327d4a8899fe8e4cddd89ae874..b86f8ee4d5d1d42ee51f86bf7419259c4408160e 100644 (file)
@@ -15,22 +15,32 @@ asmlinkage int sys_ioperm(unsigned long from, unsigned long num, int turn_on)
 asmlinkage int sys_iopl(unsigned long unused)
 {
     struct pt_regs *regs = (struct pt_regs *)&unused;
-    unsigned int level = regs->ebx;
-    unsigned int old = (regs->eflags >> 12) & 3;
-
-    if ( !(start_info.flags & SIF_PRIVILEGED) )
+    unsigned int new_io_pl = regs->ebx & 3;
+    unsigned int old_io_pl = (regs->eflags >> 12) & 3;
+    unsigned int new_hypercall_pl = (regs->ebx >> 2) & 3;
+    unsigned int old_hypercall_pl = current->thread.hypercall_pl;
+
+    /* Need "raw I/O" privileges for direct port access. */
+    if ( (new_io_pl > old_io_pl) && 
+         (!capable(CAP_SYS_RAWIO) || !(start_info.flags & SIF_PRIVILEGED)) )
         return -EPERM;
 
-    if ( level > 3 )
-        return -EINVAL;
-    if ( (level > old) && !capable(CAP_SYS_RAWIO) )
+    /* Just need generic root/admin privileges for direct hypercall access. */
+    if ( (new_hypercall_pl > old_hypercall_pl) && !capable(CAP_SYS_ADMIN) )
         return -EPERM;
-    
-    /* Change the one on our stack for sanity's sake. */
-    regs->eflags = (regs->eflags & 0xffffcfff) | (level << 12);
+
+    /* Maintain OS privileges even if user attempts to relinquish them. */
+    if ( new_hypercall_pl == 0 )
+        new_hypercall_pl = 1;
+    if ( (new_io_pl == 0) && !(start_info.flags & SIF_PRIVILEGED) )
+        new_io_pl = 1;
+
+    /* Change our version of the privilege levels. */
+    regs->eflags = (regs->eflags & 0xffffcfff) | (old_io_pl << 12);
+    current->thread.hypercall_pl = new_hypercall_pl;
 
     /* Force the change at ring 0. */
-    HYPERVISOR_iopl(level);
+    HYPERVISOR_set_priv_levels(new_io_pl, new_hypercall_pl);
 
     return 0;
 }
index a7c0755d38d107f61d95b6a0467eb2a25006788a..c1764fce50e47e8708bcefe2e384d2114c22d6bd 100644 (file)
@@ -269,6 +269,9 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp,
     unlazy_fpu(current);
     struct_cpy(&p->thread.i387, &current->thread.i387);
 
+    /* We're careful with hypercall privileges. Don't allow inheritance. */
+    p->thread.hypercall_pl = 1;
+
     return 0;
 }
 
@@ -366,8 +369,9 @@ void __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
     {
         queue_multicall2(__HYPERVISOR_stack_switch, __KERNEL_DS, next->esp0);
         /* Next call will silently fail if we are a non-privileged guest OS. */
-        queue_multicall1(__HYPERVISOR_iopl, 
-                         ((((struct pt_regs *)next->esp0)-1)->eflags>>12)&3);
+        queue_multicall2(__HYPERVISOR_set_priv_levels,
+                         ((((struct pt_regs *)next->esp0)-1)->eflags>>12)&3,
+                         next->hypercall_pl);
     }
 
     /* EXECUTE ALL TASK SWITCH XEN SYSCALLS AT THIS POINT. */
index 832a7a2087071b7c0213946d1d2c1ea6e7653c3b..cc53983f34608ca0c9db30c138f21927aaca5376 100644 (file)
@@ -301,23 +301,21 @@ void __init setup_arch(char **cmdline_p)
 
     paging_init();
 
-    if(start_info.flags & SIF_PRIVILEGED) {
-      // we are privileged guest os - should be able to set IOPL
-      if(HYPERVISOR_iopl(1)) {
-       panic("Unable to obtain IOPL, despite being SIF_PRIVILEGED");
-      }
+    if ( start_info.flags & SIF_PRIVILEGED ) 
+        /* We are privileged guest os - should have IO privileges. */
+        if( HYPERVISOR_set_priv_levels(1, 1) )
+            panic("Unable to obtain IOPL, despite being SIF_PRIVILEGED");
 
-    }
+    if(start_info.flags & SIF_CONSOLE)
+    {
+        if( !(start_info.flags & SIF_PRIVILEGED) )
+            panic("Xen granted us console access but not privileged status");
 
-    if(start_info.flags & SIF_CONSOLE) {
-      if(!(start_info.flags & SIF_PRIVILEGED)) {
-       panic("Xen granted us console access but not privileged status");
-      }
 #ifdef CONFIG_VT
 #if defined(CONFIG_VGA_CONSOLE)
-      conswitchp = &vga_con;
+        conswitchp = &vga_con;
 #elif defined(CONFIG_DUMMY_CONSOLE)
-      conswitchp = &dummy_con;
+        conswitchp = &dummy_con;
 #endif
 #endif
     }
diff --git a/xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in b/xenolinux-2.4.21-pre4-sparse/drivers/char/Config.in
deleted file mode 100644 (file)
index 217398d..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-#
-# Character device configuration
-#
-mainmenu_option next_comment
-comment 'Character devices'
-
-bool 'Xen console support' CONFIG_XEN_CONSOLE
-comment 'The options below are alpha-stage and will probably not work'
-bool 'Virtual terminal' CONFIG_VT
-if [ "$CONFIG_VT" = "y" ]; then
-   bool '  Support for console on virtual terminal' CONFIG_VT_CONSOLE
-   bool '  Support for VGA Video' CONFIG_VGA_CONSOLE
-   bool '  Support for Dummy Video (for testing)' CONFIG_DUMMY_CONSOLE
-   bool '  PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
-fi
-
-bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS
-if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
-   int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256
-fi
-
-
-endmenu
-
-# KEPT IN CASE WE WANT TO BRING SOME BACK...
-#
-#if [ "$CONFIG_VT" = "y" ]; then
-#   bool '  Support for console on virtual terminal' CONFIG_VT_CONSOLE
-#   if [ "$CONFIG_GSC_LASI" = "y" ]; then
-#      bool '    Support for Lasi/Dino PS2 port' CONFIG_GSC_PS2
-#   fi
-#fi
-#
-#tristate 'Standard/generic (8250/16550 and compatible UARTs) serial support' CONFIG_SERIAL
-#if [ "$CONFIG_SERIAL" = "y" ]; then
-#   bool '  Support for console on serial port' CONFIG_SERIAL_CONSOLE
-#   if [ "$CONFIG_GSC_LASI" = "y" ]; then
-#      bool '   serial port on GSC support' CONFIG_SERIAL_GSC
-#   fi
-#   if [ "$CONFIG_IA64" = "y" ]; then
-#      bool 'Support for serial console port described by EFI HCDP table' CONFIG_SERIAL_HCDP
-#   fi
-#   if [ "$CONFIG_ARCH_ACORN" = "y" ]; then
-#      tristate '   Atomwide serial port support' CONFIG_ATOMWIDE_SERIAL
-#      tristate '   Dual serial port support' CONFIG_DUALSP_SERIAL
-#   fi
-#fi
-#dep_mbool 'Extended dumb serial driver options' CONFIG_SERIAL_EXTENDED $CONFIG_SERIAL
-#if [ "$CONFIG_SERIAL_EXTENDED" = "y" ]; then
-#   bool '  Support more than 4 serial ports' CONFIG_SERIAL_MANY_PORTS
-#   bool '  Support for sharing serial interrupts' CONFIG_SERIAL_SHARE_IRQ
-#   bool '  Autodetect IRQ on standard ports (unsafe)' CONFIG_SERIAL_DETECT_IRQ
-#   bool '  Support special multiport boards' CONFIG_SERIAL_MULTIPORT
-#   bool '  Support the Bell Technologies HUB6 card' CONFIG_HUB6
-#fi
-#bool 'Non-standard serial port support' CONFIG_SERIAL_NONSTANDARD
-#if [ "$CONFIG_SERIAL_NONSTANDARD" = "y" ]; then
-#   tristate '  Computone IntelliPort Plus serial support' CONFIG_COMPUTONE
-#   tristate '  Comtrol Rocketport support' CONFIG_ROCKETPORT
-#   tristate '  Cyclades async mux support' CONFIG_CYCLADES
-#   if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_CYCLADES" != "n" ]; then
-#      bool '    Cyclades-Z interrupt mode operation (EXPERIMENTAL)' CONFIG_CYZ_INTR
-#   fi
-#   if [ "$CONFIG_X86_64" != "y" ]; then
-#      tristate '  Digiboard Intelligent Async Support' CONFIG_DIGIEPCA
-#      if [ "$CONFIG_DIGIEPCA" = "n" ]; then
-#         tristate '  Digiboard PC/Xx Support' CONFIG_DIGI
-#      fi
-#   fi
-#   dep_tristate '  Hayes ESP serial port support' CONFIG_ESPSERIAL $CONFIG_ISA
-#   tristate '  Moxa Intellio support' CONFIG_MOXA_INTELLIO
-#   tristate '  Moxa SmartIO support' CONFIG_MOXA_SMARTIO
-#   if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
-#      dep_tristate '  Multi-Tech multiport card support (EXPERIMENTAL)' CONFIG_ISI m
-#   fi
-#   tristate '  Microgate SyncLink card support' CONFIG_SYNCLINK
-#   tristate '  SyncLink Multiport support' CONFIG_SYNCLINKMP
-#   tristate '  HDLC line discipline support' CONFIG_N_HDLC
-#   tristate '  SDL RISCom/8 card support' CONFIG_RISCOM8
-#   if [ "$CONFIG_X86_64" != "y" ]; then
-#      tristate '  Specialix IO8+ card support' CONFIG_SPECIALIX
-#      if [ "$CONFIG_SPECIALIX" != "n" ]; then
-#         bool '  Specialix DTR/RTS pin is RTS' CONFIG_SPECIALIX_RTSCTS
-#      fi 
-#      tristate '  Specialix SX (and SI) card support' CONFIG_SX
-#      tristate '  Specialix RIO system support' CONFIG_RIO
-#      if [ "$CONFIG_RIO" != "n" ]; then
-#        bool '    Support really old RIO/PCI cards' CONFIG_RIO_OLDPCI
-#      fi
-#   fi
-#   bool '  Stallion multiport serial support' CONFIG_STALDRV
-#   if [ "$CONFIG_STALDRV" = "y" ]; then
-#     tristate '    Stallion EasyIO or EC8/32 support' CONFIG_STALLION
-#     tristate '    Stallion EC8/64, ONboard, Brumby support' CONFIG_ISTALLION
-#   fi
-#   if [ "$CONFIG_PARISC" = "y" ]; then
-#     if [ "$CONFIG_PDC_CONSOLE" != "y" ]; then
-#       bool '  Serial MUX support' CONFIG_SERIAL_MUX CONFIG_SERIAL_NONSTANDARD
-#     fi
-#     if [ "$CONFIG_SERIAL_MUX" != "y" ]; then
-#       bool '  PDC software console support' CONFIG_PDC_CONSOLE CONFIG_SERIAL_NONSTANDARD
-#     fi
-#   fi
-#   if [ "$CONFIG_MIPS" = "y" ]; then
-#     bool '  TX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912
-#     dep_bool '     Console on TX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912
-#     bool '  Enable Au1000 UART Support' CONFIG_AU1000_UART
-#     if [ "$CONFIG_AU1000_UART" = "y" ]; then
-#        bool '        Enable Au1000 serial console' CONFIG_AU1000_SERIAL_CONSOLE
-#     fi
-#     bool 'TXx927 SIO support' CONFIG_TXX927_SERIAL 
-#     if [ "$CONFIG_TXX927_SERIAL" = "y" ]; then
-#        bool 'TXx927 SIO Console support' CONFIG_TXX927_SERIAL_CONSOLE  
-#     fi                             
-#     if [ "$CONFIG_SIBYTE_SB1250" = "y" ]; then
-#        bool '  Support for sb1250 onchip DUART' CONFIG_SIBYTE_SB1250_DUART
-#        if [ "$CONFIG_SIBYTE_SB1250_DUART" = "y" ]; then
-#           bool '  Console on SB1250 DUART' CONFIG_SIBYTE_SB1250_DUART_CONSOLE
-#         if [ "$CONFIG_SIBYTE_SB1250_DUART_CONSOLE" = "y" ]; then
-#            define_bool CONFIG_SERIAL_CONSOLE y
-#         fi
-#         int  '  Output buffers size (in bytes)' CONFIG_SB1250_DUART_OUTPUT_BUF_SIZE 1024
-#         bool '  Leave port 1 alone (for kgdb or audio)' CONFIG_SIBYTE_SB1250_DUART_NO_PORT_1
-#       fi
-#     fi
-#  fi
-#fi
-#if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_ZORRO" = "y" ]; then
-#   tristate 'Commodore A2232 serial support (EXPERIMENTAL)' CONFIG_A2232
-#fi
-#if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
-#   bool 'DC21285 serial port support' CONFIG_SERIAL_21285
-#   if [ "$CONFIG_SERIAL_21285" = "y" ]; then
-#      if [ "$CONFIG_OBSOLETE" = "y" ]; then
-#         bool '  Use /dev/ttyS0 device (OBSOLETE)' CONFIG_SERIAL_21285_OLD
-#      fi
-#      bool '  Console on DC21285 serial port' CONFIG_SERIAL_21285_CONSOLE
-#   fi
-#   if [ "$CONFIG_MIPS" = "y" ]; then
-#     bool '  TMPTX3912/PR31700 serial port support' CONFIG_SERIAL_TX3912
-#     dep_bool '     Console on TMPTX3912/PR31700 serial port' CONFIG_SERIAL_TX3912_CONSOLE $CONFIG_SERIAL_TX3912
-#     bool '  Enable Au1000 UART Support' CONFIG_AU1000_UART
-#     if [ "$CONFIG_AU1000_UART" = "y" ]; then
-#         bool '        Enable Au1000 serial console' CONFIG_AU1000_SERIAL_CONSOLE
-#     fi
-#   fi
-#   if [ "$CONFIG_PARISC" = "y" ]; then
-#     bool '  PDC software console support' CONFIG_PDC_CONSOLE
-#   fi
-#fi
-#if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
-#   bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
-#   if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
-#     define_bool CONFIG_IT8172_CIR y
-#   else
-#     bool '    Enable PS2 Keyboard Support' CONFIG_PC_KEYB
-#   fi
-#   bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
-#   bool 'Enable Smart Card Reader 1 Support ' CONFIG_IT8172_SCR1
-#fi
-#if [ "$CONFIG_MIPS_IVR" = "y" ]; then
-#   bool 'Enable Qtronix 990P Keyboard Support' CONFIG_QTRONIX_KEYBOARD
-#   if [ "$CONFIG_QTRONIX_KEYBOARD" = "y" ]; then
-#     define_bool CONFIG_IT8172_CIR y
-#   fi
-#   bool 'Enable Smart Card Reader 0 Support ' CONFIG_IT8172_SCR0
-#fi
-##PTYS WERE HERE
-#if [ "$CONFIG_PARPORT" != "n" ]; then
-#   dep_tristate 'Parallel printer support' CONFIG_PRINTER $CONFIG_PARPORT
-#   if [ "$CONFIG_PRINTER" != "n" ]; then
-#      bool '  Support for console on line printer' CONFIG_LP_CONSOLE
-#   fi
-#   dep_tristate 'Support for user-space parallel port device drivers' CONFIG_PPDEV $CONFIG_PARPORT
-#   dep_tristate 'Texas Instruments parallel link cable support' CONFIG_TIPAR $CONFIG_PARPORT
-#fi
-#
-#if [ "$CONFIG_PPC64" ] ; then 
-#   bool 'pSeries Hypervisor Virtual Console support' CONFIG_HVC_CONSOLE
-#fi
-#
-#source drivers/i2c/Config.in
-#
-#mainmenu_option next_comment
-#comment 'Mice'
-#tristate 'Bus Mouse Support' CONFIG_BUSMOUSE
-#if [ "$CONFIG_BUSMOUSE" != "n" ]; then
-#   dep_tristate '  ATIXL busmouse support' CONFIG_ATIXL_BUSMOUSE $CONFIG_BUSMOUSE
-#   dep_tristate '  Logitech busmouse support' CONFIG_LOGIBUSMOUSE $CONFIG_BUSMOUSE
-#   dep_tristate '  Microsoft busmouse support' CONFIG_MS_BUSMOUSE $CONFIG_BUSMOUSE
-#   if [ "$CONFIG_ADB" = "y" -a "$CONFIG_ADB_KEYBOARD" = "y" ]; then
-#      dep_tristate '  Apple Desktop Bus mouse support (old driver)' CONFIG_ADBMOUSE $CONFIG_BUSMOUSE
-#   fi
-#fi
-#
-#tristate 'Mouse Support (not serial and bus mice)' CONFIG_MOUSE
-#if [ "$CONFIG_MOUSE" != "n" ]; then
-#   bool '  PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE
-#   tristate '  C&T 82C710 mouse port support (as on TI Travelmate)' CONFIG_82C710_MOUSE
-#   tristate '  PC110 digitizer pad support' CONFIG_PC110_PAD
-#   tristate '  MK712 touch screen support' CONFIG_MK712_MOUSE
-#fi
-#endmenu
-#
-#source drivers/char/joystick/Config.in
-#
-#tristate 'QIC-02 tape support' CONFIG_QIC02_TAPE
-#if [ "$CONFIG_QIC02_TAPE" != "n" ]; then
-#   bool '  Do you want runtime configuration for QIC-02' CONFIG_QIC02_DYNCONF
-#   if [ "$CONFIG_QIC02_DYNCONF" != "y" ]; then
-#      comment '  Edit configuration parameters in ./include/linux/tpqic02.h!'
-#   else
-#      comment '  Setting runtime QIC-02 configuration is done with qic02conf'
-#      comment '  from the tpqic02-support package.  It is available at'
-#      comment '  metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/'
-#   fi
-#fi
-#
-#tristate 'IPMI top-level message handler' CONFIG_IPMI_HANDLER
-#dep_mbool '  Generate a panic event to all BMCs on a panic' CONFIG_IPMI_PANIC_EVENT $CONFIG_IPMI_HANDLER
-#dep_tristate '  Device interface for IPMI' CONFIG_IPMI_DEVICE_INTERFACE $CONFIG_IPMI_HANDLER
-#dep_tristate '  IPMI KCS handler' CONFIG_IPMI_KCS $CONFIG_IPMI_HANDLER
-#dep_tristate '  IPMI Watchdog Timer' CONFIG_IPMI_WATCHDOG $CONFIG_IPMI_HANDLER
-#
-#mainmenu_option next_comment
-#comment 'Watchdog Cards'
-#bool 'Watchdog Timer Support' CONFIG_WATCHDOG
-#if [ "$CONFIG_WATCHDOG" != "n" ]; then
-#   bool '  Disable watchdog shutdown on close' CONFIG_WATCHDOG_NOWAYOUT
-#   tristate '  Acquire SBC Watchdog Timer' CONFIG_ACQUIRE_WDT
-#   tristate '  Advantech SBC Watchdog Timer' CONFIG_ADVANTECH_WDT
-#   tristate '  ALi M7101 PMU Watchdog Timer' CONFIG_ALIM7101_WDT
-#   tristate '  AMD "Elan" SC520 Watchdog Timer' CONFIG_SC520_WDT
-#   tristate '  Berkshire Products PC Watchdog' CONFIG_PCWATCHDOG
-#   if [ "$CONFIG_FOOTBRIDGE" = "y" ]; then
-#      tristate '  DC21285 watchdog' CONFIG_21285_WATCHDOG
-#      if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
-#         tristate '  NetWinder WB83C977 watchdog' CONFIG_977_WATCHDOG
-#      fi
-#   fi
-#   tristate '  Eurotech CPU-1220/1410 Watchdog Timer' CONFIG_EUROTECH_WDT
-#   tristate '  IB700 SBC Watchdog Timer' CONFIG_IB700_WDT
-#   tristate '  ICP ELectronics Wafer 5823 Watchdog' CONFIG_WAFER_WDT
-#   if [ "$CONFIG_SGI_IP22" = "y" ]; then
-#      dep_tristate '  Indy/I2 Hardware Watchdog' CONFIG_INDYDOG $CONFIG_SGI_IP22
-#   fi
-#   tristate '  Intel i810 TCO timer / Watchdog' CONFIG_I810_TCO
-#   tristate '  Mixcom Watchdog' CONFIG_MIXCOMWD 
-#   tristate '  SBC-60XX Watchdog Timer' CONFIG_60XX_WDT
-#   dep_tristate '  SC1200 Watchdog Timer (EXPERIMENTAL)' CONFIG_SC1200_WDT $CONFIG_EXPERIMENTAL
-#   tristate '  NatSemi SCx200 Watchdog' CONFIG_SCx200_WDT
-#   tristate '  Software Watchdog' CONFIG_SOFT_WATCHDOG
-#   tristate '  W83877F (EMACS) Watchdog Timer' CONFIG_W83877F_WDT
-#   tristate '  WDT Watchdog timer' CONFIG_WDT
-#   tristate '  WDT PCI Watchdog timer' CONFIG_WDTPCI
-#   if [ "$CONFIG_WDT" != "n" ]; then
-#      bool '    WDT501 features' CONFIG_WDT_501
-#      if [ "$CONFIG_WDT_501" = "y" ]; then
-#         bool '      Fan Tachometer' CONFIG_WDT_501_FAN
-#      fi
-#   fi
-#   tristate '  ZF MachZ Watchdog' CONFIG_MACHZ_WDT
-#   dep_tristate '  AMD 766/768 TCO Timer/Watchdog' CONFIG_AMD7XX_TCO $CONFIG_EXPERIMENTAL
-#fi
-#endmenu
-#
-#if [ "$CONFIG_ARCH_NETWINDER" = "y" ]; then
-#   tristate 'NetWinder thermometer support' CONFIG_DS1620
-#   tristate 'NetWinder Button' CONFIG_NWBUTTON
-#   if [ "$CONFIG_NWBUTTON" != "n" ]; then
-#      bool '  Reboot Using Button' CONFIG_NWBUTTON_REBOOT
-#   fi
-#   tristate 'NetWinder flash support' CONFIG_NWFLASH
-#fi
-#dep_tristate 'NatSemi SCx200 GPIO Support' CONFIG_SCx200_GPIO $CONFIG_SCx200
-#
-#if [ "$CONFIG_X86" = "y" -o "$CONFIG_X86_64" = "y" ]; then
-#   dep_tristate 'AMD 768 Random Number Generator support' CONFIG_AMD_RNG $CONFIG_PCI
-#fi
-#if [ "$CONFIG_X86" = "y" -o "$CONFIG_IA64" = "y" ]; then
-#   dep_tristate 'Intel i8x0 Random Number Generator support' CONFIG_INTEL_RNG $CONFIG_PCI
-#fi
-#dep_tristate 'AMD 76x native power management (Experimental)' CONFIG_AMD_PM768 $CONFIG_PCI
-#tristate '/dev/nvram support' CONFIG_NVRAM
-#tristate 'Enhanced Real Time Clock Support' CONFIG_RTC
-#if [ "$CONFIG_IA64" = "y" ]; then
-#   bool 'EFI Real Time Clock Services' CONFIG_EFI_RTC
-#fi
-#if [ "$CONFIG_OBSOLETE" = "y" -a "$CONFIG_ALPHA_BOOK1" = "y" ]; then
-#   bool 'Tadpole ANA H8 Support (OBSOLETE)'  CONFIG_H8
-#fi
-#
-#tristate 'Double Talk PC internal speech card support' CONFIG_DTLK
-#tristate 'Siemens R3964 line discipline' CONFIG_R3964
-#tristate 'Applicom intelligent fieldbus card support' CONFIG_APPLICOM
-#if [ "$CONFIG_EXPERIMENTAL" = "y" -a "$CONFIG_X86" = "y" -a "$CONFIG_X86_64" != "y" ]; then
-#   dep_tristate 'Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL)' CONFIG_SONYPI $CONFIG_PCI
-#fi
-#
-#mainmenu_option next_comment
-#comment 'Ftape, the floppy tape device driver'
-#tristate 'Ftape (QIC-80/Travan) support' CONFIG_FTAPE
-#if [ "$CONFIG_FTAPE" != "n" ]; then
-#   source drivers/char/ftape/Config.in
-#fi
-#endmenu
-#
-#if [ "$CONFIG_GART_IOMMU" = "y" ]; then
-#      bool '/dev/agpgart (AGP Support)' CONFIG_AGP
-#      define_bool CONFIG_AGP_AMD_8151 y
-#else
-#      tristate '/dev/agpgart (AGP Support)' CONFIG_AGP
-#fi      
-#if [ "$CONFIG_AGP" != "n" ]; then
-#   bool '  Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support' CONFIG_AGP_INTEL
-#   bool '  Intel I810/I815/I830M (on-board) support' CONFIG_AGP_I810
-#   bool '  VIA chipset support' CONFIG_AGP_VIA
-#   bool '  AMD Irongate, 761, and 762 support' CONFIG_AGP_AMD
-#   if [ "$CONFIG_GART_IOMMU" != "y" ]; then
-#      bool '  AMD 8151 support' CONFIG_AGP_AMD_8151
-#   fi   
-#   bool '  Generic SiS support' CONFIG_AGP_SIS
-#   bool '  ALI chipset support' CONFIG_AGP_ALI
-#   bool '  Serverworks LE/HE support' CONFIG_AGP_SWORKS
-#   if [ "$CONFIG_IA64" = "y" ]; then
-#      bool '  HP ZX1 AGP support' CONFIG_AGP_HP_ZX1
-#   fi
-#fi
-#
-#bool 'Direct Rendering Manager (XFree86 DRI support)' CONFIG_DRM
-#if [ "$CONFIG_DRM" = "y" ]; then
-#   bool '  Build drivers for old (XFree 4.0) DRM' CONFIG_DRM_OLD
-#   if [ "$CONFIG_DRM_OLD" = "y" ]; then
-#      comment 'DRM 4.0 drivers'
-#      source drivers/char/drm-4.0/Config.in
-#   else
-#      comment 'DRM 4.1 drivers'
-#      define_bool CONFIG_DRM_NEW y
-#      source drivers/char/drm/Config.in
-#   fi
-#fi
-#
-#if [ "$CONFIG_HOTPLUG" = "y" -a "$CONFIG_PCMCIA" != "n" ]; then
-#   source drivers/char/pcmcia/Config.in
-#fi
-#if [ "$CONFIG_MIPS_AU1000" = "y" ]; then
-#   tristate ' Alchemy Au1000 GPIO device support' CONFIG_AU1000_GPIO
-#   tristate ' Au1000/ADS7846 touchscreen support' CONFIG_TS_AU1000_ADS7846
-#fi
-#if [ "$CONFIG_MIPS_ITE8172" = "y" ]; then
-#  tristate ' ITE GPIO' CONFIG_ITE_GPIO
-#fi
-#
-#if [ "$CONFIG_X86" = "y" ]; then
-#   tristate 'ACP Modem (Mwave) support' CONFIG_MWAVE
-#fi
-
-
-
-
-
diff --git a/xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile b/xenolinux-2.4.21-pre4-sparse/drivers/char/Makefile
new file mode 100644 (file)
index 0000000..492c63d
--- /dev/null
@@ -0,0 +1,334 @@
+#
+# Makefile for the kernel character device drivers.
+#
+# Note! Dependencies are done automagically by 'make dep', which also
+# removes any old dependencies. DON'T put your own dependencies here
+# unless it's something special (ie not a .c file).
+#
+# Note 2! The CFLAGS definitions are now inherited from the
+# parent makes..
+#
+
+#
+# This file contains the font map for the default (hardware) font
+#
+FONTMAPFILE = cp437.uni
+
+O_TARGET := char.o
+
+obj-y   += mem.o tty_io.o n_tty.o tty_ioctl.o raw.o pty.o misc.o random.o
+
+# All of the (potential) objects that export symbols.
+# This list comes from 'grep -l EXPORT_SYMBOL *.[hc]'.
+
+export-objs     :=     busmouse.o console.o keyboard.o sysrq.o \
+                       misc.o pty.o random.o selection.o serial.o \
+                       sonypi.o tty_io.o tty_ioctl.o generic_serial.o \
+                       au1000_gpio.o hp_psaux.o nvram.o
+
+mod-subdirs    :=      joystick ftape drm drm-4.0 pcmcia
+
+list-multi     :=      
+
+KEYMAP   =defkeymap.o
+KEYBD    =pc_keyb.o
+CONSOLE  =console.o
+SERIAL   =serial.o
+
+ifeq ($(ARCH),s390)
+  KEYMAP   =
+  KEYBD    =
+  CONSOLE  =
+  SERIAL   =
+endif
+
+ifeq ($(ARCH),mips)
+  ifneq ($(CONFIG_PC_KEYB),y)
+    KEYBD    =
+  endif
+endif
+
+ifeq ($(ARCH),s390x)
+  KEYMAP   =
+  KEYBD    =
+  CONSOLE  =
+  SERIAL   =
+endif
+
+ifeq ($(ARCH),m68k)
+   ifdef CONFIG_AMIGA
+      KEYBD = amikeyb.o
+   else
+      ifndef CONFIG_MAC
+        KEYBD =
+      endif
+   endif
+   SERIAL   =
+endif
+
+ifeq ($(ARCH),parisc)
+   ifdef CONFIG_GSC_PS2
+      KEYBD   = hp_psaux.o hp_keyb.o
+   else
+      KEYBD   =
+   endif
+   ifdef CONFIG_SERIAL_MUX
+      CONSOLE += mux.o
+   endif
+   ifdef CONFIG_PDC_CONSOLE
+      CONSOLE += pdc_console.o
+   endif
+endif
+
+ifdef CONFIG_Q40
+  KEYBD += q40_keyb.o
+  SERIAL = serial.o
+endif
+
+ifdef CONFIG_APOLLO
+  KEYBD += dn_keyb.o
+endif
+
+ifeq ($(ARCH),parisc)
+   ifdef CONFIG_GSC_PS2
+      KEYBD   = hp_psaux.o hp_keyb.o
+   else
+      KEYBD   =
+   endif
+   ifdef CONFIG_PDC_CONSOLE
+      CONSOLE += pdc_console.o
+   endif
+endif
+
+ifeq ($(ARCH),arm)
+  ifneq ($(CONFIG_PC_KEYMAP),y)
+    KEYMAP   =
+  endif
+  ifneq ($(CONFIG_PC_KEYB),y)
+    KEYBD    =
+  endif
+endif
+
+ifeq ($(ARCH),sh)
+  KEYMAP   =
+  KEYBD    =
+  CONSOLE  =
+  ifeq ($(CONFIG_SH_HP600),y)
+  KEYMAP   = defkeymap.o
+  KEYBD    = scan_keyb.o hp600_keyb.o
+  CONSOLE  = console.o
+  endif
+  ifeq ($(CONFIG_SH_DMIDA),y)
+  # DMIDA does not connect the HD64465 PS/2 keyboard port
+  # but we allow for USB keyboards to be plugged in.
+  KEYMAP   = defkeymap.o
+  KEYBD    = # hd64465_keyb.o pc_keyb.o
+  CONSOLE  = console.o
+  endif
+  ifeq ($(CONFIG_SH_EC3104),y)
+  KEYMAP   = defkeymap.o
+  KEYBD    = ec3104_keyb.o
+  CONSOLE  = console.o
+  endif
+  ifeq ($(CONFIG_SH_DREAMCAST),y)
+  KEYMAP   = defkeymap.o
+  KEYBD    =
+  CONSOLE  = console.o
+  endif
+endif
+
+ifeq ($(CONFIG_DECSTATION),y)
+  KEYMAP   =
+  KEYBD    =
+  SERIAL   = decserial.o
+endif
+
+ifeq ($(CONFIG_BAGET_MIPS),y)
+  KEYBD    =
+  SERIAL   =
+endif
+
+ifeq ($(CONFIG_NINO),y)
+  SERIAL   =
+endif
+
+ifneq ($(CONFIG_SUN_SERIAL),)
+  SERIAL   =
+endif
+
+ifeq ($(CONFIG_QTRONIX_KEYBOARD),y)
+  KEYBD    = qtronix.o
+  KEYMAP   = qtronixmap.o
+endif
+
+ifeq ($(CONFIG_DUMMY_KEYB),y)
+  KEYBD = dummy_keyb.o
+endif
+
+obj-$(CONFIG_VT) += vt.o vc_screen.o consolemap.o consolemap_deftbl.o $(CONSOLE) selection.o
+obj-$(CONFIG_SERIAL) += $(SERIAL)
+obj-$(CONFIG_SERIAL_HCDP) += hcdp_serial.o
+obj-$(CONFIG_SERIAL_21285) += serial_21285.o
+obj-$(CONFIG_SERIAL_SA1100) += serial_sa1100.o
+obj-$(CONFIG_SERIAL_AMBA) += serial_amba.o
+obj-$(CONFIG_TS_AU1000_ADS7846) += au1000_ts.o
+
+obj-$(CONFIG_DUMMY_CONSOLE) += dummy_console.o
+
+ifndef CONFIG_SUN_KEYBOARD
+  obj-$(CONFIG_VT) += keyboard.o $(KEYMAP) $(KEYBD)
+else
+  obj-$(CONFIG_PCI) += keyboard.o $(KEYMAP)
+endif
+
+obj-$(CONFIG_HIL) += hp_keyb.o
+obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
+obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
+obj-$(CONFIG_ROCKETPORT) += rocket.o
+obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
+obj-$(CONFIG_MOXA_INTELLIO) += moxa.o
+obj-$(CONFIG_DIGI) += pcxx.o
+obj-$(CONFIG_DIGIEPCA) += epca.o
+obj-$(CONFIG_CYCLADES) += cyclades.o
+obj-$(CONFIG_STALLION) += stallion.o
+obj-$(CONFIG_ISTALLION) += istallion.o
+obj-$(CONFIG_SIBYTE_SB1250_DUART) += sb1250_duart.o
+obj-$(CONFIG_COMPUTONE) += ip2.o ip2main.o
+obj-$(CONFIG_RISCOM8) += riscom8.o
+obj-$(CONFIG_ISI) += isicom.o
+obj-$(CONFIG_ESPSERIAL) += esp.o
+obj-$(CONFIG_SYNCLINK) += synclink.o
+obj-$(CONFIG_SYNCLINKMP) += synclinkmp.o
+obj-$(CONFIG_N_HDLC) += n_hdlc.o
+obj-$(CONFIG_SPECIALIX) += specialix.o
+obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
+obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o
+obj-$(CONFIG_SX) += sx.o generic_serial.o
+obj-$(CONFIG_RIO) += rio/rio.o generic_serial.o
+obj-$(CONFIG_SH_SCI) += sh-sci.o generic_serial.o
+obj-$(CONFIG_SERIAL167) += serial167.o
+obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_MVME162_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
+obj-$(CONFIG_HVC_CONSOLE) += hvc_console.o
+obj-$(CONFIG_SERIAL_TX3912) += generic_serial.o serial_tx3912.o
+obj-$(CONFIG_TXX927_SERIAL) += serial_txx927.o
+
+subdir-$(CONFIG_RIO) += rio
+subdir-$(CONFIG_INPUT) += joystick
+
+obj-$(CONFIG_ATIXL_BUSMOUSE) += atixlmouse.o
+obj-$(CONFIG_LOGIBUSMOUSE) += logibusmouse.o
+obj-$(CONFIG_PRINTER) += lp.o
+obj-$(CONFIG_TIPAR) += tipar.o
+
+ifeq ($(CONFIG_INPUT),y)
+obj-y += joystick/js.o
+endif
+
+obj-$(CONFIG_BUSMOUSE) += busmouse.o
+obj-$(CONFIG_DTLK) += dtlk.o
+obj-$(CONFIG_R3964) += n_r3964.o
+obj-$(CONFIG_APPLICOM) += applicom.o
+obj-$(CONFIG_SONYPI) += sonypi.o
+obj-$(CONFIG_MS_BUSMOUSE) += msbusmouse.o
+obj-$(CONFIG_82C710_MOUSE) += qpmouse.o
+obj-$(CONFIG_AMIGAMOUSE) += amigamouse.o
+obj-$(CONFIG_ATARIMOUSE) += atarimouse.o
+obj-$(CONFIG_ADBMOUSE) += adbmouse.o
+obj-$(CONFIG_PC110_PAD) += pc110pad.o
+obj-$(CONFIG_MK712_MOUSE) += mk712.o
+obj-$(CONFIG_RTC) += rtc.o
+obj-$(CONFIG_EFI_RTC) += efirtc.o
+ifeq ($(CONFIG_PPC),)
+  obj-$(CONFIG_NVRAM) += nvram.o
+endif
+obj-$(CONFIG_TOSHIBA) += toshiba.o
+obj-$(CONFIG_I8K) += i8k.o
+obj-$(CONFIG_DS1620) += ds1620.o
+obj-$(CONFIG_INTEL_RNG) += i810_rng.o
+obj-$(CONFIG_AMD_RNG) += amd768_rng.o
+obj-$(CONFIG_AMD_PM768) += amd76x_pm.o
+
+obj-$(CONFIG_ITE_GPIO) += ite_gpio.o
+obj-$(CONFIG_AU1000_GPIO) += au1000_gpio.o
+obj-$(CONFIG_COBALT_LCD) += lcd.o
+
+obj-$(CONFIG_QIC02_TAPE) += tpqic02.o
+
+subdir-$(CONFIG_FTAPE) += ftape
+subdir-$(CONFIG_DRM_OLD) += drm-4.0
+subdir-$(CONFIG_DRM_NEW) += drm
+subdir-$(CONFIG_PCMCIA) += pcmcia
+subdir-$(CONFIG_AGP) += agp
+
+ifeq ($(CONFIG_FTAPE),y)
+obj-y       += ftape/ftape.o
+endif
+
+obj-$(CONFIG_H8) += h8.o
+obj-$(CONFIG_PPDEV) += ppdev.o
+obj-$(CONFIG_DZ) += dz.o
+obj-$(CONFIG_NWBUTTON) += nwbutton.o
+obj-$(CONFIG_NWFLASH) += nwflash.o
+obj-$(CONFIG_SCx200_GPIO) += scx200_gpio.o scx200.o
+
+# Only one watchdog can succeed. We probe the hardware watchdog
+# drivers first, then the softdog driver.  This means if your hardware
+# watchdog dies or is 'borrowed' for some reason the software watchdog
+# still gives you some cover.
+
+obj-$(CONFIG_PCWATCHDOG) += pcwd.o
+obj-$(CONFIG_ACQUIRE_WDT) += acquirewdt.o
+obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o
+obj-$(CONFIG_IB700_WDT) += ib700wdt.o
+obj-$(CONFIG_MIXCOMWD) += mixcomwd.o
+obj-$(CONFIG_60XX_WDT) += sbc60xxwdt.o
+obj-$(CONFIG_W83877F_WDT) += w83877f_wdt.o
+obj-$(CONFIG_SC520_WDT) += sc520_wdt.o
+obj-$(CONFIG_WDT) += wdt.o
+obj-$(CONFIG_WDTPCI) += wdt_pci.o
+obj-$(CONFIG_21285_WATCHDOG) += wdt285.o
+obj-$(CONFIG_977_WATCHDOG) += wdt977.o
+obj-$(CONFIG_I810_TCO) += i810-tco.o
+obj-$(CONFIG_MACHZ_WDT) += machzwd.o
+obj-$(CONFIG_SH_WDT) += shwdt.o
+obj-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o
+obj-$(CONFIG_ALIM7101_WDT) += alim7101_wdt.o
+#obj-$(CONFIG_ALIM1535_WDT) += alim1535d_wdt.o
+obj-$(CONFIG_INDYDOG) += indydog.o
+obj-$(CONFIG_SC1200_WDT) += sc1200wdt.o
+obj-$(CONFIG_SCx200_WDT) += scx200_wdt.o
+obj-$(CONFIG_WAFER_WDT) += wafer5823wdt.o
+obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
+obj-$(CONFIG_AMD7XX_TCO) += amd7xx_tco.o
+
+subdir-$(CONFIG_MWAVE) += mwave
+ifeq ($(CONFIG_MWAVE),y)
+  obj-y += mwave/mwave.o
+endif
+
+subdir-$(CONFIG_IPMI_HANDLER) += ipmi
+ifeq ($(CONFIG_IPMI_HANDLER),y)
+  obj-y += ipmi/ipmi.o
+endif
+
+include $(TOPDIR)/Rules.make
+
+fastdep:
+
+conmakehash: conmakehash.c
+       $(HOSTCC) $(HOSTCFLAGS) -o conmakehash conmakehash.c
+
+consolemap_deftbl.c: $(FONTMAPFILE) conmakehash
+       ./conmakehash $(FONTMAPFILE) > consolemap_deftbl.c
+
+consolemap_deftbl.o: consolemap_deftbl.c $(TOPDIR)/include/linux/types.h
+
+.DELETE_ON_ERROR:
+
+defkeymap.c: defkeymap.map
+       set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
+
+qtronixmap.c: qtronixmap.map
+       set -e ; loadkeys --mktable $< | sed -e 's/^static *//' > $@
index 887a01b231090a684ee736e31384959d1cc921b7..da0e1a19e0a699dbe8f0e4159d5f3079aaa72cad 100644 (file)
@@ -364,13 +364,14 @@ static inline long HYPERVISOR_kbd_op(unsigned char op, unsigned char val)
     return ret;
 }
 
-static inline long HYPERVISOR_iopl(unsigned int new_iopl)
+static inline long HYPERVISOR_set_priv_levels(unsigned int new_io_pl,
+                                              unsigned int new_hypercall_pl)
 {
     int ret;
     __asm__ __volatile__ (
         TRAP_INSTR
-        : "=a" (ret) : "0" (__HYPERVISOR_iopl),
-        "b" (new_iopl) );
+        : "=a" (ret) : "0" (__HYPERVISOR_set_priv_levels),
+        "b" (new_io_pl), "c" (new_hypercall_pl) );
 
     return ret;
 }
index 86b0020c2316d35f532861b6ea510511ce94cc26..d3547ea2bc09f34395d358a8a70b4a1c135e8593 100644 (file)
@@ -356,6 +356,7 @@ struct thread_struct {
        unsigned long   esp;
        unsigned long   fs;
        unsigned long   gs;
+       unsigned int    hypercall_pl;
 /* Hardware debugging registers */
        unsigned long   debugreg[8];  /* %%db0-7 debug registers */
 /* fault info */
@@ -368,7 +369,7 @@ struct thread_struct {
        unsigned long           v86flags, v86mask, saved_esp0;
 };
 
-#define INIT_THREAD  { 0 }
+#define INIT_THREAD  { 0, 0, 0, 0, 0, 1, {0}, 0, 0, 0, {0}, 0, 0, 0, 0, 0 }
 
 #define INIT_TSS  {                                            \
        0,0, /* back_link, __blh */                             \